import request from '@/utils/request'
import type { PageResult } from '@/types'

/**
 * 审批中心 API
 */

// ========== 学生异动申请相关 ==========

/**
 * 学生提交异动申请
 * 注意：不需要传studentId，后端会自动根据登录用户查询
 */
export interface StudentApplyParams {
  // ❌ 不需要传studentId，后端会自动处理
  // studentId: number
  subType: 'suspension' | 'transfer' | 'return' | 'dropout'  // 休学/转学/复学/退学
  content: string  // 申请理由
  attachmentIds?: string  // 附件ID列表（逗号分隔）
  attachmentUrl?: string  // 附件URL列表（逗号分隔）
  targetClassId?: number  // 目标班级ID（转班时使用）
  targetDeptId?: number  // 目标院系ID（转系时使用）
  startDate?: string  // 开始日期（休学时使用）
  endDate?: string  // 结束日期（休学时使用）
  priority?: number  // 优先级：0-普通 1-重要 2-紧急
}

export function submitStudentApply(data: StudentApplyParams) {
  return request<number>({
    url: '/approval/student/apply',
    method: 'post',
    data
  })
}

/**
 * 审批处理（初审/终审/转交）
 */
export interface ApprovalProcessParams {
  approvalId: number
  action: 1 | 2 | 3  // 1-同意 2-拒绝 3-转交
  opinion: string  // 审批意见
  nextApproverId?: number  // 下一审批人（转交时使用）
}

export function processApproval(data: ApprovalProcessParams) {
  return request<void>({
    url: '/approval/process',
    method: 'post',
    data
  })
}

/**
 * 获取我的待审批列表（班主任/教务处）
 */
export function getMyPendingApprovals(params: {
  current: number
  size: number
}) {
  return request<PageResult<any>>({
    url: '/approval/my-pending',
    method: 'get',
    params
  })
}

/**
 * 获取审批详情（含学生档案快照、历史意见、附件列表）
 */
export function getApprovalDetail(id: number) {
  return request<any>({
    url: `/approval/detail/${id}`,
    method: 'get'
  })
}

/**
 * 学生查询自己的申请记录
 */
export function getMyApplies(params: {
  current: number
  size: number
  subType?: string
  status?: number
}) {
  return request<PageResult<any>>({
    url: '/approval/my-applies',
    method: 'get',
    params
  })
}

/**
 * 撤回申请
 */
export function cancelApproval(id: number) {
  return request<void>({
    url: `/approval/cancel/${id}`,
    method: 'post'
  })
}

// ========== 原有接口（保留兼容） ==========

// 分页查询审批列表
export const getApprovalPage = (params: {
  current: number
  size: number
  applyType?: number
  status?: number
}) => {
  return request({
    url: '/approval/page',
    method: 'get',
    params
  })
}

// 审批通过
export const approveApply = (data: {
  id: number
  status: number
  remark?: string
}) => {
  return request({
    url: '/approval/approve',
    method: 'post',
    data
  })
}

// 审批拒绝
export const rejectApply = (data: {
  id: number
  status: number
  remark: string
}) => {
  return request({
    url: '/approval/reject',
    method: 'post',
    data
  })
}

// 获取统计数据
export const getApprovalStatistics = () => {
  return request({
    url: '/approval/statistics',
    method: 'get'
  })
}

